package com.cskaoyan.javase._1extends._10final._3variable._3static;

/**
 * static修饰成员变量,表示静态成员变量,由于类加载只有一次
 *      所以静态成员变量在类的全局唯一,属于类
 *      所以静态成员变量也称之为"全局变量"
 *
 * final修饰的静态成员变量,表示静态成员常量,由于静态成员变量在类的全局唯一
 *      所以静态成员常量,在类的全局唯一,且是常量,取值不变
 *      所以它是"全局常量",是一个真正意义上的常量
 *      一旦取值固定,不会由于外界因素改变取值.
 *
 * 语法:
 * [访问权限修饰符] final static 数据类型 全局常量名;
 * 注: 全局常量名建议字母大写,单词用"_"隔开.
 *
 * 全局常量的赋值也不能依赖于默认初始化的默认值,而是:
 *      1.显式赋值
 *      2.静态代码块赋值
 * 全局常量的取值必须在类加载过程中明确.
 * 以上两种赋值方式必须选择其一,也只能选择其一.
 *
 * 注意事项:
 *      1.全局常量是真正意义上的常量,所以全局常量的访问权限修饰符
 *          普遍是public
 *          (当然这不是必须的)
 *
 *      2.final static 还是 static final?
 *          没有区别,想咋用咋用都行
 *
 * @since 15:08
 * @author wuguidong@cskaoyan.onaliyun.com
 */
public class Demo {
    public static void main(String[] args) {
        System.out.println(A.MIN_VALUE);
        System.out.println(A.MAX_VALUE);
        // A.MAX_VALUE = 200;
    }
}

class A {
    public final static int MAX_VALUE = 100;
    static final int MIN_VALUE;

    static {
        MIN_VALUE = 10;
    }
}
